package br.com.sigde.dao;

import java.util.ArrayList;
import java.util.List;

import br.com.sigde.dao.comando.CommandUtil;
import br.com.sigde.framework.util.ObjectUtil;
import br.com.sigde.modelo.Modelo;
import br.com.sigde.modelo.Profissional;

public class ProfissionalDAO extends SigdeDAO{

	
	private static final String CONSULTA_NOME = "CONSULTA_NOME";
	private static final String DELETAR_PROFISSIONAL = "DELETAR_PROFISSIONAL";
	private static ProfissionalDAO dao;
	
	public static ProfissionalDAO getInstance(){
		if (dao == null) {
			dao = new ProfissionalDAO();
		}
		return dao;
	}
	@Override
	public void incluir(Modelo modelo) {
		super.insert(modelo);
		
	}

	@Override
	public void alterar(Modelo modelo) {
		super.update(modelo);		
	}

	@Override
	public void excluir(Modelo modelo) {
		String sql = CommandUtil.getComandoSQL(DELETAR_PROFISSIONAL, this.getClass());
		sql = montaParametro(sql, "$1", String.valueOf(modelo));
		super.executaComando(sql);
		
	}

	@Override
	public List<Modelo> recuperar() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Modelo recuperar(Modelo modelo) {
		// TODO Auto-generated method stub
		return (Modelo) super.recuperaRegistro(modelo);
	}
	public List<Profissional> consultar(Profissional dto) {
		String sql = CommandUtil.getComandoSQL(CONSULTA_NOME, this.getClass());
		if(!ObjectUtil.isEmpty(dto.getNoProfissional())){
			String sql2 = " WHERE no_profissional = '" + dto.getNoProfissional() + "'";
            sql = sql.concat(sql2);
		 }
		super.executaComando(sql);
        Profissional prof = null;
        List retorno= new ArrayList();
        try{
                while(super.proximoRegistro()){
                        prof = (Profissional)montaRegistro(Profissional.class);
                        retorno.add(prof);
                }
        }
        catch(Exception e){
                e.printStackTrace();
        }
        return retorno;
        
	}
	public void excluirProfissional(Profissional dto) {
		String sql = CommandUtil.getComandoSQL(DELETAR_PROFISSIONAL, this.getClass());
		sql = montaParametro(sql, "$1", String.valueOf(dto.getCoProfissional()));
		super.executaComando(sql);
		
	}

}
